package com.sinog.biz.service.business;

import com.sinog.core.model.UserDTO;
import com.sinog.core.utilbean.Result;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;

/**
 * @desc 安置帮教管理 - 安置帮教工作信息管理
 * @author sunsf
 * @date 2020-02-07-16:40
 */
@RestController
public interface AzgzInfoMainService {

    /**
     * 安置帮教管理 - 安置工作信息管理 - 待安置 - 列表
     * @param pageIndex 起始页
     * @param pageSize 止页
     * @param key 根据服刑人员名称模糊搜索
     * @param departid 当前登录用户的departId
     * @param level 当前登录用户的level
     * @param orgid 登录用户的上级单位
     * @param pinggu 是否重点稳控对象 01:是,02:否
     * @param sortField 排序字段
     * @param sortOrder 排序方式
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/getUnSettleList")
    String getUnSettleList(
            @RequestParam(value = "pageIndex", required = false) Integer pageIndex,
            @RequestParam(value = "pageSize", required = false) Integer pageSize,
            @RequestParam(value = "key", required = false) String key,
            @RequestParam(value = "departid", required = false) String departid,
            @RequestParam(value = "level", required = false) int level,
            @RequestParam(value = "orgid", required = false) String orgid,
            @RequestParam(value = "pinggu", required = false) String pinggu,
            @RequestParam(value = "sortField", required = false) String sortField,
            @RequestParam(value = "sortOrder", required = false) String sortOrder);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 待安置/已安置 查看所有安置信息
     * @param priNum 服刑人员编号
     * @param departid 当前登录用户的departId
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/getAzBaseInfonList")
    Result getAzBaseInfonList(
            @RequestParam(value = "priNum", required = false) String priNum,
            @RequestParam(value = "departid", required = false) String departid);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 待安置/已安置 查看多条安置信息
     * @param azId 安置人员编号
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/getAzBaseInfo")
    Result getAzBaseInfo(@RequestParam(value = "azId", required = false) String azId);

    /**
     * 获取证书信息
     * @param prinum 服刑人员编号
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/getCertsByPrinum")
    Result getCertsByPrinum(@RequestParam String prinum);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 待安置/已安置 - 安置 - 根据帮教基地类型查询具体条目
     * @param azType 基地类型
     * @param user 当前登录用户
     * @param priNum 服刑人员编号
     * @return List<Map<String,Object>>
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/getAzjdList")
    List<Map<String,Object>> getAzjdList(
            @RequestParam(value = "azType", required = false) String azType,
            @RequestBody UserDTO user,@RequestParam(value = "priNum", required = false) String priNum);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 待安置/已安置 - 安置 - 就业推荐列表
     * @param priNum 服刑人员编号
     * @param departid 当前登录用户departId
     * @param level 当前登录用户level
     * @param orgid 当前登录用户的上级单位Id
     * @param pageIndex pageIndex
     * @param pageSize pageSize
     * @return List<Map<String,Object>>
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/getJytjList")
    String getJytjList(
            @RequestParam(value = "pageIndex", required = false) Integer pageIndex,
            @RequestParam(value = "pageSize", required = false) Integer pageSize,
            @RequestParam(value = "priNum", required = false) String priNum,
            @RequestParam(value = "departid", required = false) String departid,
            @RequestParam(value = "level", required = false) int level,
            @RequestParam(value = "orgid", required = false) String orgid);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 待安置/已安置 - 安置 - 保存
     * @param dataStr 业务数据
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/saveAzInfo")
    Result saveAzInfo(@RequestParam(value = "dataStr", required = false) String dataStr);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 已安置 - 列表
     * @param pageIndex 起始页
     * @param pageSize 止页
     * @param key 根据服刑人员名称模糊搜索
     * @param departid 当前登录用户的departId
     * @param level 当前登录用户的level
     * @param orgid 登录用户的上级单位
     * @param pinggu 是否重点稳控对象 01:是,02:否
     * @param sortField 排序字段
     * @param sortOrder 排序方式
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/getDownSettleList")
    String getDownSettleList(
            @RequestParam(value = "pageIndex", required = false) Integer pageIndex,
            @RequestParam(value = "pageSize", required = false) Integer pageSize,
            @RequestParam(value = "key", required = false) String key,
            @RequestParam(value = "departid", required = false) String departid,
            @RequestParam(value = "level", required = false) int level,
            @RequestParam(value = "orgid", required = false) String orgid,
            @RequestParam(value = "pinggu", required = false) String pinggu,
            @RequestParam(value = "sortField", required = false) String sortField,
            @RequestParam(value = "sortOrder", required = false) String sortOrder);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 待安置/已安置 - 安置 - 删除
     * @param delId 安置编号
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/delAzInfoAction")
    Result delAzInfoAction(@RequestParam(value = "delId", required = false) String delId);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 待安置/已安置 - 安置 - 基地推荐列表
     * @param departid 当前登录用户的departId
     * @param level 当前登录用户的level
     * @param priNum 服刑人员编号
     * @param pageIndex pageIndex
     * @param pageSize pageSize
     * @return List<Map<String,Object>>
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/getJdtjList")
    String getJdtjList(
            @RequestParam(value = "departid", required = false) String departid,
            @RequestParam(value = "level", required = false) int level,
            @RequestParam(value = "priNum", required = false) String priNum,
            @RequestParam(value = "pageIndex", required = false) Integer pageIndex,
            @RequestParam(value = "pageSize", required = false) Integer pageSize);

    /**
     * 获取培训机构下拉列表（获取培训范围是本省、本市、本区县、本街道的所有培训机构）
     * @param user 当前登录用户
     * @return List<Map<String,Object>>
     */
    @RequestMapping("/azbj/azbjgl/azgzgl/getPxjgList")
    List<Map<String,Object>> getPxjgList(@RequestBody UserDTO user);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 已安置 - 移出基地操作
     * @param priNum 服刑人员编号
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/azgzgl/moveJdCheckPriNum")
    Result moveJdCheckPriNum(@RequestParam(value = "priNum", required = false) String priNum);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 已安置 - 移出基地操作
     * @param priNum 服刑人员编号
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/azgzgl/changeAnzhiState")
    Result changeAnzhiState(@RequestParam(value = "priNum", required = false) String priNum);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 已安置 - 批量移出基地操作
     * @param priNums  服刑人员编号(多个priNum用"|"拼接)
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/azgzgl/moveJdCheckPriNumPl")
    Result moveJdCheckPriNumPl(@RequestParam("priNums") String priNums);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 已安置 - 移除 -移至其他基地
     * @param data 业务数据
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/azgzgl/moveJdBypriNum")
    Result moveJdBypriNum(@RequestParam(value = "data", required = false) String data);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 已安置 - 移除 - 批量移至其他基地
     * @param data 业务数据
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/azgzgl/moveJdBypriNumPl")
    Result moveJdBypriNumPl(@RequestParam(value = "data", required = false) String data);

    /**
     * 获取基地已安置人数
     * @param jdid 基地编号
     * @return Map<String,String>
     */
    @PostMapping("/azbj/azbjgl/azgzgl/selectKeAnZhiNum")
    Map<String,Integer> selectKeAnZhiNum(@RequestParam("jdid") String jdid);

    /**
     * 获取安置信息列表
     * @param priNum 服刑人员编号
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/bjdxInfo/azgzgl/getAzBaseInfonAgainList")
    Result getAzBaseInfonAgainList(
            @RequestParam(value = "priNum", required = false) String priNum);

    /**
     * 判断该安置人数是否存在该基地
     * @param priNum 服刑人员编号
     * @param jdid 基地编号
     * @return Integer
     */
    @RequestMapping("/azbj/azbjgl/azgzgl/searchAnzhiByPriNum")
    Integer searchAnzhiByPriNum(@RequestParam("priNum") String priNum,@RequestParam("jdid") String jdid);

    /**
     * 安置帮教管理 - 安置工作信息管理 - 已安置 - 列表
     * @param pageIndex 起始页
     * @param pageSize 止页
     * @param key 根据服刑人员名称模糊搜索
     * @param departId 当前登录用户的departId
     * @param level 当前登录用户的level
     * @param orgid 登录用户的上级单位
     * @param pinggu 是否重点稳控对象 01:是,02:否
     * @param sortField 排序字段
     * @param sortOrder 排序方式
     * @return Result
     */
    @RequestMapping("/azbj/azbjgl/azgzgl/getMoveSettleList")
    String getMoveSettleList( @RequestParam(value = "pageIndex", required = false) Integer pageIndex,
                              @RequestParam(value = "pageSize", required = false) Integer pageSize,
                              @RequestParam(value = "key", required = false) String key,
                              @RequestParam(value = "departId", required = false) String departId,
                              @RequestParam(value = "level", required = false) int level,
                              @RequestParam(value = "orgid", required = false) String orgid,
                              @RequestParam(value = "pinggu", required = false) String pinggu,
                              @RequestParam(value = "sortField", required = false) String sortField,
                              @RequestParam(value = "sortOrder", required = false) String sortOrder);
}